#ifndef DB_H
#define DB_H
#include<my_header.h>
#include<openssl/md5.h>
#include<mysql/mysql.h>
//记录user信息
typedef struct user_info_s{
   // 用户id
   int id;
   //用户名
   char username[65];
   //存储盐值
   char salt[33];
   //存储加密后的密码
   char encrypted_pass[257];
   //是否删除，0表示正常，1表示逻辑删除 
   int is_delete;
}user_info_t;

typedef struct file_info_S{
    // 文件id
    int id;
    // 文件所属用户名
    char username[65];
    //文件名
    char filename[65];
    //文件path
    char path[257];
    //文件md5码
    char md5[16];
    //文件父id
    int parent_id;
    //文件是否删除
    int is_delete;
    //文件实际存储的路径 绝对路径+md5码
    char md5_path[129];
    //文件类型
    char type;
}file_info_t;

typedef struct user_s{
  // 存储多行用户信息
  user_info_t user[1024];
}user_t;

typedef struct file_s{
    // 存储多行文件信息
    file_info_t file[1024];
}file_t;


//计算文件的md5码
void getMd5(const char *filename,char *result);

//初始化数据库连接
 MYSQL*InitDb(const char *host, const char *user, const char *pass, const char *dbname);

//执行其他数据库操作
int execDb(const char *sql,MYSQL*db);

//执行sql语句,将结果传入对应的数据结构中
int selectUser(const char *sql,MYSQL*db,user_t *user);

int selectFile(const char *sql,MYSQL*db,file_t *file);


//关闭数据库连接
void closeDb(MYSQL *mysql);




#endif
